@tool
class_name AdditionalEffect_PlayVFX
extends AdditionalEffect

## 播放特效

#region 属性
@export var vfx_id:String
## 小于0表示持续时间无限
@export var duration:float
@export var is_attached:bool
@export var offest:Vector2
@export var rotate_angle:float
## 是否采用target的位置为原点
@export var is_local_position:bool = true
@export var is_local_rotation:bool = false
var play_id:int = -1
#endregion
#region 字段
#endregion
#region 信号
#endregion

#region 基类方法
## 初始化
func init(args:Dictionary = {}):
	if super(args):
		return true
	return false
## 检查能否执行添加效果，默认为true
func can_excute() -> bool:
	return super()
## 执行添加效果
func excute() -> bool:
	if super():
		play_id = GameVFXSystem.play_vfx_by_id(vfx_id,duration,target,is_attached,offest if not is_local_position else offest + owner.global_position,deg_to_rad(rotate_angle) if not is_local_rotation else deg_to_rad(rotate_angle) + owner.global_rotation)
		return true
	else:
		return false
## 取消执行的效果
func cancel_excute() -> bool:
	if super():
		GameVFXSystem.stop_vfx(play_id)
		return true
	else:
		return false
#endregion
#region 公共方法
#endregion
#region 私有方法
#endregion
#region 生命周期函数
func _init() -> void:
	if Engine.is_editor_hint():
		resource_local_to_scene = true
#endregion
